# 字典,key值唯一,value值不唯一
# 当后面添加的内容跟字典里的有相同时,会替换字典的value


# 定义字典并初始值,可以理解为java的hashMap 或者json
hashMap = {"小明": "我是小明", "小红": "我是小红", "陈老师": 1145}
newList = {"list": 15}
# 字典变量.update(字典) 可以往字典内添加元素,每次执行会从尾部添加
hashMap.update(newList)
# 或者通过key值方式赋值,正常情况下是重新给key对应的v赋值,如果找不到会重新添加该键值对,尾部添加
hashMap["我是不存在的key"] = 114514

print()

# 如使用get获取对应Key的值时找不到,会返回None ,一个空的,说明没有该值,但不会抛出异常
print(hashMap.get("name"))

# 根据左边的内容判断右边是否存在该值返回布尔值
var = "name" in hashMap
print(var)

# 删除 ,根据key删除对应的元素key和value,如果找不到,就会抛出异常
del hashMap["小明"]

print(hashMap)

# 获取字典的长度
print(len(hashMap))

"""
获取字典里的所有键
dict_keys 对象（keys() 返回）：
类似于集合（set），保留了字典中的键。
不支持索引和切片。
动态更新，反映字典中键的变化。
转换为列表使用 list(keys)。
"""
hashMap.keys()

"""
获取字典里所有的键对应的值
dict_values 对象（values() 返回）：
类似于列表，保留了字典中的值。
可以通过索引或切片访问。
动态更新，反映字典中值的变化。
转换为列表使用 list(values)。
"""
hashMap.values()

"""
获取字典里的所有键值对
dict_items 对象（items() 返回）：
保留了字典中的键值对（元组）。
可以通过索引或切片访问。
动态更新，反映字典中键值对的变化。
转换为列表使用 list(items)
"""
hashMap.items()
